%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%  Copyright by Wenliang Du.                                       %%
%%  This work is licensed under the Creative Commons                %%
%%  Attribution-NonCommercial-ShareAlike 4.0 International License. %%
%%  To view a copy of this license, visit                           %%
%%  http://creativecommons.org/licenses/by-nc-sa/4.0/.              %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% -------------------------------------------
% SUBSECTION
% ------------------------------------------- 
\subsection{测试 DNS 设置}

在用户容器中，我们将运行一系列命令来确保我们的实验设置正确。在实验报告中，请记录你的测试结果。 


\paragraph{获取 \texttt{ns.attacker32.com} 的 IP 地址。} 
当我们运行以下 \texttt{dig} 命令时， 
本地 DNS 服务器将根据添加到其配置文件中的 \texttt{forward} 区域条目，
将请求转发到攻击者的域名服务器。因此，回复应来自我们在攻击者域名服务器上设置的区域文件（\texttt{attacker32.com.zone}）。 
如果得到的结果不是这样，那么你的设置可能存在问题。请在实验报告中描述观察结果。

\begin{lstlisting}
$ dig ns.attacker32.com
\end{lstlisting}

\paragraph{获取 \texttt{www.example.com} 的 IP 地址。} 
现在有两个域名服务器托管 \texttt{example.com} 域名，一个是该域的官方域名服务器，另一个是攻击者容器。我们将查询这两个域名服务器，看看得到什么响应。
请运行以下两个命令（从用户机器上运行），并描述观察结果。

\begin{lstlisting}
// 将查询发送到我们的本地 DNS 服务器，本地服务器会将查询
// 转发到 example.com 的官方名称服务器。
$ dig www.example.com

// 直接向 ns.attacker32.com 查询
$ dig @ns.attacker32.com www.example.com
\end{lstlisting}

显然，没有人会向 \texttt{ns.attacker32.com} 查询 \texttt{www.example.com} 的 IP 地址；他们总是会向 \texttt{example.com} 的官方域名服务器查询答案。DNS 缓存投毒攻击的目标是让受害者向 \texttt{ns.attacker32.com} 查询 \texttt{www.example.com} 的 IP 地址。换句话说，如果我们的攻击成功，只要运行第一个 \texttt{dig} 命令（没有 \texttt{@} 选项的那个），我们就会从攻击者那里得到伪造的结果，而不是从官方的域名服务器获取的真实结果。
